This invention relates to personal computers designed with commercially available microprocessor chip sets. More particularly, the present invention relates to a personal computer which has a 32-bit microprocessor, a 32-bit random access memory, an 8/16-bit bus controller and a 16- bit read only memory (ROM). It has long been the practice to store the basic input/output system (BIOS) in the computer ROM. The ROM chips retain the program (BIOS) in memory even when the chips (or personal computer is de-energized. The basic input/output system (BIOS) controls the operation of the microprocessor and is one of the key elements in achieving and maintaining compatibility with the standards in the industry.
With the advent of a 32-bit processor the limiting factor in computer speed, whenever calls are made to the system BIOS, has been the call by a 32-bit device to a 16-bit memory through the 8/16-bit bus controller.
The introduction of the personal computer has resulted in a tremendous amount of application software programs written for both the professional and for the home entertainment market. These personal computers are designed around commercially available microprocessor chip sets which may include a plurality of microprocessors connected in an architecture which results in varying degrees of execution throughput rates.
Maintaining compatibility with commercially available computer programs requires that calls made to the BIOS by the third party software produce essentially the same results from one generation of computers to the other. Stated another way the call to the BIOS in the earlier generation computer must be handled in a similar manner in the new generation computer in order to produce the same results. The compatibility requirements thus dictate that no significant changes be made to the specific instructions stored in the BIOS or the address locations of the instructions. This requires that new computers with new generation microprocessors be structured with a similar instructions in the BIOS, similar instruction sets, and the same addresses for those instructions.
Popular microprocessor chip sets are those such as the ones manufactured by Intel Corporation (hereafter referred to as Intel), known commonly as 8088 microprocessor, 8086 microprocessor and the 80286 microprocessor, all having similar instruction sets. Similar instruction sets are also available for a new generation microprocessor from Intel, the 80386 microprocessor. The 80386 microprocessor has a substantially higher execution cycle rate, almost three times faster than the 80286. Available also from Intel is a co-processor chip, the Intel 80287, which may be used either with the 80386 or the 80386 microprocessor chips to achieve even higher execution throughput rates.
With the availability of a software compatible (i.e., executes the same instruction set) microprocessor, it is possible to upgrade a prior-art personal computer with higher execution speeds for some application programs written for the lower speed microprocessor chip sets. While faster software compatible microprocessors are available, it has not been possible, in the past to speed up all microprocessor operations by simply changing over to a newer and faster microprocessor to produce a personal computer which executes at a faster speed for all of the application programs written for the slower microprocessors. One of the limitations encountered in an upgrade of the microprocessor is the need for a 32-bit processor to access a 16-bit memory at the old microprocessor memory access rate.
It is undeniable that providing a personal computer capable of executing application programs written for slower microprocessors in a third of the time would be of a commercial advantage in the marketplace, but such a device would not be commercially attractive unless it were able to execute all the application programs written for slower speed microprocessors. For example, it is possible to provide a personal computer having an Intel 80386, 80287 microprocessor pair (a high speed microprocessor) rather than an 80386, 80287 microprocessor pair (a slower speed microprocessor) and run the high speed microprocessor at higher clocking frequencies (rates). Unfortunately, these simple changes do not result in a personal computer which is software compatible for all varieties of application programs.
Even though the previous microprocessor chip sets, (i.e. 8086, 8088, 80286 ) are software compatible, the internal design of the microprocessors is not the same. This difference in internal design, depending upon the design of the application program, i.e., does it contain a lot of program jumps, affects the execution speed of a given application program. The execution time at the high speed for the high speed microprocessor is not necessarily proportionally faster than the execution time when microprocessor clock is set to the slower normal frequency for the slow speed microprocessor. Stated differently, reducing the microprocessor clock from a high speed mode to the normal clock for the slow speed microprocessor while keeping all else the same does not result in the same execution time for a given application program to run on the high speed microprocessor as occurs if the same program is run on the slow speed microprocessor.
For the Intel 80386 microprocessor, simply reducing the clocking frequency to the clocking frequency of an 8088, or 8086, or 80286 microprocessor results in an execution speed which is faster than it would have been for the slow speed 8088 microprocessor chip. This faster execution speed results from the internal design differences which exist between the microprocessors, and the fact that the 80386 requires 32-bit fetches from memory while the 8088 requires 8-bit fetches, the 8086 requires 16-bit fetches and the 80286 requires 32-bit fetches using two 16-bit parallel paths.
The internal design difference between these microprocessors is primarily in the amount of pre-fetch buffer memory provided in the microprocessor. In the Intel 8088, there are four bytes of pre-fetch queue, in the 8086, there are six bytes of pre-fetch queue, in the 80286, there are 8 bytes of pre-fetch queue while in the 80386 there are 12 bytes of pre-fetch queue. Each microprocessor is designed to keep its pre-fetch queue full of information in order that the microprocessor can continue to execute code, which on the average, achieves a desired execution throughput rate. When program jumps occur, the contents of the pre-fetch buffer are lost. This loss of information is reflected in wasted execution time because of the time required to obtain the pre-fetch information that is thrown away. Thus, the 8088 microprocessor, having four bytes of pre-fetch queue running at a given clocking frequency and fetching 8-bit bytes per fetch cycle would produce different execution throughput than the 80386 having 12 bytes of pre-fetch queue running at the same clocking frequency but fetching 32-bit bytes per fetch cycle. It is because of this difference in the pre-fetch buffer capacity and the rate at which 32-bit bytes are fetched from memory that the 80386 runs at a faster speed for the same application program when the 80386 microprocessor is run at the same clocking frequency as is normally used for the slower microprocessor e.g. 8088.
Therefore, it would be advantageous to provide a personal computer which provides for a high speed microprocessor to execute application programs while accessing and executing BIOS instructions at a 32-bit rate without any significant loss in the compatibility with application programs written for older generation microprocessors.